/**
 * @param {number[]} nums
 * @param {number} k
 * @return {void} Do not return anything, modify nums in-place instead.
 */
// var rotate = function (nums, k) {
//   //数组长度
//   let n = nums.length
//   // 定义一个长度为nums.length的空数组
//   let res = new Array(n).fill(0)

//   //转移
//   for (let i = 0; i < n; i++) {
//     let index = (i + k) % n
//     res[index] = nums[i]
//   }

//   for (let i = 0; i < n; i++) {
//     nums[i] = res[i]
//   }
// };
//方法二
var rotate = function (nums, k) {
  //数组长度
  let n = nums.length
  //处理k
  k = k % n
  //反转函数--双指针思想
  function reverse(start, end) {
    while (start < end) {
      [nums[start], nums[end]] = [nums[end], nums[start]]
      start++
      end--
    }
  }
  //三次翻转数组nums
  reverse(0, n - 1)
  reverse(0, k - 1)
  reverse(k, n - 1)
};